import json
from flask import Flask
from flask import render_template
from flask import request
import ast

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/run/', methods=['GET', 'POST'])
def run():
    if request.method == "POST":
        data = request.form.get('data')
        data = format_data(data=data)
    return render_template('show_data.html', result=data)


def format_data(data):
    """
    接收json转换成字典
    """
    if data == '':
        return '参数非法，请重新输入'
    if ':' not in data:
        return '参数非法，请重新输入'
    data = json.loads(data)
    return data


@app.route('/run2/', methods=['GET', 'POST'])
def run2():
    if request.method == "POST":
        data = request.form.get('data')
        """
        上一行代码得到的值是字典两边加了引号，其实已经是字符串了，不是字典了
        这个时候用eval方法将得到的值的两边引号去掉
        """
        if data == '':
            return render_template('show_data.html', result='参数非法，请重新输入')
        else:
            # data = eval(data)
            data = ast.literal_eval((data))
        data = format_data2(data=data)
    return render_template('show_data.html', result=data)


def format_data2(data):
    """
    接收字典，转换成json
    """
    if str(data) == '':
        return '参数非法请重新输入'
    data = json.dumps(data, sort_keys=True)
    return data


if __name__ == '__main__':
    app.run('0.0.0.0', 5001, debug=True)
